#pragma once

#include <string>
#include <memory>
#include <iostream>

class BaseDriver
{
public:
    BaseDriver(const std::string& name = "") : m_name(name)
    {
        std::cout << "create Driver: " << m_name << std::endl;
    }
    virtual ~BaseDriver() = default;

    virtual bool Init() = 0;

    std::string GetName()
    {
        return m_name;
    }

    void SetName(const std::string& name)
    {
        m_name = name;
    }

protected:
    std::string m_name; 
};

using BaseDriverPtr = std::shared_ptr<BaseDriver>;